This invention relates to data communication networks, and in particular, to ATM networks for transmitting and receiving isochronous data.
In the data communications process, a sending station can transfer isochronous audio and video data into an ATM network on frame-by-frame basis at a constant rate. Each frame can contain many ATM cells. In transit through the ATM network, the data at a receiving station will be skewed, clumped, and jittered, due to cable propagation delays through the network and ATM cell queueing (ATM cell transfer delays) and through many ATM switches in the network. Thus, the received data have to be reshaped at the receiving station to become a constant data stream as originally arranged.
One conventional method to reshape the data at the receiving station into the original constant rate stream is to transmit timing information to the ATM network along with each frame of the data.
Unfortunately, this method has following disadvantages:
(1) The data transmission is dependent on ATM network clock; PA1 (2) The same network clock must be available at both sending and receiving ends; and PA1 (3) The implementation is complicated. PA1 (1) Data queue size is dependent on cell delay variation; PA1 (2) If cells are lost in transit, null cells must be added to keep the local Phase Locked Loop (PLL) clock stable, thus this method may not be feasible for bursty LAN traffic; and PA1 (3) Network jitter can affect playback of the bit stream (Playback refers to replaying the video and audio data (at a constant rate) to the user (i.e. video screen and sound speakers). PA1 at least one sending terminal, connected to said network system, for sending a data stream containing a plurality of data segments being represented as: data segment (1), data segment (2), . . . , and data segment (n), data segment (i) (i=1, 2, . . . ,n) being sent at a time T.sub.send (i) (i=1, 2, . . . , n); PA1 at least one receiving terminal, connected to said network system, for receiving said data stream including data segment (1), segment (2), . . . , data segment (n), said data segment (i) (i=1, 2, . . . , n) being received at time T.sub.destination (i); PA1 means, at the endpoint of said receiving terminal, for measuring the time delay T.sub.delay (i) between T.sub.send (i) and T.sub.destination (i), (i=1, 2, . . . , n); PA1 means for generating a constant offset bias, said constant offset bias being greater than T.sub.delay (i) (i=1, 2, . . . , n); and PA1 means for outputting said data segment (i) (i=1, 2, . . . , n) at the time of T.sub.send (i) plus said constant offset bias. PA1 at transmitting end of a sending terminal connected to said network system, sending a data stream containing a plurality of data segments being represented as: data segment (1), data segment (2), . . . , and data segment (n), data segment (i) (i=1, 2, . . . ,n) being sent at time T.sub.send (i) (i=1, 2, . . . , n); PA1 at receiving end of a receiving terminal, connected to said network system, receiving said data stream including data segment (1), segment (2), . . . , data segment (n), said data segment (i) (i=1, 2, . . . , n) being received at time T.sub.destination (i); PA1 at the endpoint of said receiving terminal, measuring the time delay T.sub.delay (i) between T.sub.send (i) and T.sub.destination (i), (i=1, 2, . . . ,n); PA1 generating a constant offset bias, said constant offset bias being greater than T.sub.delay (i) (i=1, 2, . . . , n); and PA1 outputting said data segment (i) (i=1, 2, . . . , n) at the time of T.sub.send (i) plus said constant offset bias.
Another conventional method to reshape the data at the receiving station into the original constant rate stream is to store the data received into a data queue. The receiving station then reads the queue with a local clock. The fill level of the queue is used to control the frequency of the local clock. The control is performed by continuously measuring the fill level around the queues midway point. By measuring the fill level a phase-locked loop can reconstruct the local clock. It the queue starts to fill up, the local clock reading the queue speeds up. If the queue starts to empty, the local clock slows down. If the ATM cell is lost in transit through the network, the receiver should detect the loss and put a null cell into the queue, Otherwise, the phase-locked loop reading the queue will become unstable.
While data transmission is independent from ATM network clock, this method has the following disadvantages:
Therefore, it is desirable to provide improved apparatus and method to reshape the data at receiving station into a constant rate stream.